Sabitler, adından da anlaşılabileceği gibi, programlarda kullanılan değiştirilemeyen değerlerdir. Sabitler herhangi bir veri türünden tanımlanabilir. Sabitler genellikle programların başında değişkenlere bir ilk değer atama amacı ile veya farklı ifade oluşumlarının içinde kullanılabilir.
Farklı veri türünden yapılan sabit tanımlamaları aşağıda gösterilmektedir:
21 // int sabiti
35.754 // float sabiti
'B' // char sabiti
L'B' // Geniş karakter char sabiti
"Bilgisayar" // Karakter dizisi sabiti
L"Bilgisayar" // Geniş karakter dizisi sabiti
char sabitler tırnak işareti, karakter dizisi sabitleri çift tırnak işareti içinde gösterilir. Geniş karakter sabitlerinin önüne L karakteri konur.
Normal koşullarda, derleyici programda verilen sayıların değerine ve yapısına bakarak, hangi veri türüne uygun bir sabit değer olduğunu belirler. Ancak, bazı durumlarda, sabit değerin sonuna bir karakter koyarak, sabit değerin veri türünü belirlemiz gerekir. Kullanılan bu ekler aşağıda gösterilmektedir:
U: int veri türü için
F: float veri türü için
L: long int ve long double veri türü için
LL: long long int veri türü için
float veri çeşidi için, sayının sonuna F harfi koyduğumuzda, sayı float bir sayı olarak, L harfi koyduğumuzda, sayı long double bir sayı olarak ve LL ifadesini koyduğumuzda, sayı long long double bir sayı olarak işlem görür.
int veri çeşidi için, bir sayının sonuna koyulan U harfi sayının unsigned int, L harfi ise long int olarak işlem görmesini sağlar.
Aşağıda farklı veri türlerinden tanımlanmış sabitler yer almaktadır:
Veri türü | Sabitler |
---|---|
int | 5 -53 24762P |
long int | 43245L -632L 46875L |
short int | 29 -621 3041 |
long long int | 127LL -8349LL 7458LL |
unsigned int | 254U 5427U 23856U |
float | 51.43F -5.42F 3834.54F |
double | 8534.26 275.864 -3266.396 |
long double | 21376.2L -7457.25L 573.854L |
Şimdi, bir örnekle öğrendiklerimizi incelemeye çalışalım:
#include <stdio.h>
int main(void)
{
char cd = 'K';
int id = 21;
unsigned short int usid = 19423U;
long int lid = 328461L;
long long int llid = 8351647LL;
float fd = 235.824F;
double dd = 235.824;
long double ldd = 235.824L;
printf("%c %d %hu %ld %lld\n", cd, id, usid, lid, llid);
printf("%.3f %.3f %.3Lf %s", fd, dd, ldd, "Bilgisayar");
return 0;
}
K 21 19423 328461 8351647 235.824 235.824
Yukarıdaki programı derleyip çalıştırdığımızda, aşağıdaki ifadeleri ekrana yazar:
K 21 19423 328461 8351647 235.824 235.824 235.824 Bilgisayar
Program 8 farklı veri türündeki değişkene atanan sabit değerleri ve bir karakter dizisini ekrana yazar.
float sayıları 10'un katları çarpanı şeklinde ifade edebiliriz. Örneğin, aşağıdaki her iki ifade de birbirine eşittir:
5687.32 56.8732E2
E2 ifadesi 10 sayısının karesi olarak değerlendirilir. Bu da 56.8732 sayısının 100 ile çarpımı demek olduğundan, satırın sol tarafında yer alan 56.8732 değeri elde edilir.
Şimdi, bu özelliği bir örnek üzerinde incelemeye çalışalım:
#include <stdio.h>
int main(void)
{
printf("%.2f %.2f", 334.15, 3.3415E2);
return 0;
}
Yukarıdaki programı derleyip çalıştırdığımızda, aşağıdaki ifadeleri ekrana yazar:
334.15 334.15
Program, printf() fonksiyonu ile float sabit değerini iki farklı yapıda ekrana yazar.
C'de, 10'luk sayı sistemi yerine 8'li veya 16'lı sayı sistemi kullanabiliriz. 8'li sayı sistemine OCTAL, 16'lı sayı sistemine ise HEXADECIMAL sayı sistemi adı verilir. 8'li sayı sisteminde 0'dan 7'e kadar olan sayılar kullanılır. Yani, bu sistemde kullanılan en büyük sayı 7 sayısıdır. 16'lı sayı sisteminde ise 0'dan 9'a kadar olan sayılar ve A'dan F'ye kadar olan harfler kullanılır. A'dan F'ye kadar olan harfler sırası ile 10, 11, 12, 13, 14 ve 15 sayılarını temsil ederler:
Sekizli sayı sistemi : 0 1 2 3 4 5 6 7 Onaltılı sayı sistemi : 0 1 2 3 4 5 6 7 8 9 10 A B C D E F
Sabit değer tanımlaması yaparken 10'luk sayı sistemi yerine, 8'lik veya 16'lık sayı sistemi kullanabiliriz. 16'lık sayı sistemindeki bir sabit 0x (0 rakamı ve x harfi) ile, sekizli sayı sistemindeki sabit ise 0 rakamı ile başlar.
Şimdi, bu özelliği bir örnek üzerinde incelemeye çalışalım:
#include <stdio.h>
int main(void)
{
int id = 135;
printf("id değişken değeri (Onlu): %d\n", id);
id = 03151; // Sekizli (Onlu=1641)
printf("id değişken değeri (Sekizli): 0%o\n", id);
// Onaltılı
id = 0x1CB; // Onaltılı (Onlu=459)
printf("id değişken değeri (Onaltılı): 0x%x", id);
return 0;
}
Yukarıdaki programı derleyip çalıştırdığımızda, aşağıdaki ifadeleri ekrana yazar:
id değişken değeri (Onlu): 135 id değişken değeri (Sekizli): 03151 id değişken değeri (Onaltılı): 0x1cb
Program, sırasıyla onlu, sekizli ve onatılı sayı sisteminde sabit değerler atadığı id değişken değerini ekrana yazar.